// 按照暴力写法，时间复杂度O(n^3)
// 想要通过，需要降维一下
// 考虑到固定前两个，就可以确定第三个在不在
// 所以可以枚举前两个，用哈希或者二分的形式找第三个，然后通过第三个找第四个即可

#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <unordered_map>

using namespace std;

const int N = 5000010;
int n;
int hhash[N];

int main()
{
    cin >> n;
    // 建立哈希表
    memset(hhash, -1, sizeof hhash);
    for(int i = 0; i * i <= n; ++i)
        for(int j = i; i * i + j * j <= n; ++j)
        {
            if(hhash[i * i + j * j] == -1)
                hhash[i * i + j * j] = i;
        }
    // 遍历ab，找是否存在cd
    for(int a = 0; a * a <= n; ++a)
        for(int b = 0; a * a + b * b <= n; ++b)
        {
            int t = n - a * a - b * b;
            if(hhash[t] != -1)
            {
                int c = hhash[t];
                int d = sqrt(t - hhash[t] * hhash[t]);
                cout << a << ' ' << b << ' ' << c << ' '  << d  << endl;
                return 0;
            }
        }
    return 0;
}